package model

import "os"

// NewLogin 初始化并返回一个指向 Login 结构体的指针。
// 该函数会创建一个默认配置的 Login 对象，并根据环境变量进行部分配置的覆盖。
// 返回的 Login 对象包含默认的域名配置、IP 配置、以及进程 ID 文件路径等信息。
func NewLogin() *Login {
	// 初始化 Login 结构体，设置默认值
	l := &Login{
		Domain: new(DomainConfig), // 初始化域名配置
		Debug:  true,              // 默认开启调试模式
		IPS: IP{
			Ip:        "",                           // IP 地址初始为空
			IpType:    os.Getenv("TXY_IP_TYPE"),     // 从环境变量获取 IP 类型
			Debug:     true,                         // 默认开启 IP 调试模式
			Pre:       "inet",                       // IP 前缀
			Out:       "",                           // 输出初始为空
			SetV6:     false,                        // 默认不设置 IPv6
			SetV4:     false,                        // 默认不设置 IPv4
			IP4:       "",                           // IPv4 地址初始为空
			IP6:       "",                           // IPv6 地址初始为空
			UrlIp6Api: "https://ipv6.icanhazip.com", // 默认的 IPv6 API 地址
		},
		Exists:    false, // 记录是否存在初始为 false
		RecordId4: 0,     // IPv4 记录 ID 初始为 0
		RecordId6: 0,     // IPv6 记录 ID 初始为 0
		RecordId:  0,     // 记录 ID 初始为 0
		Pids: Pid{
			File:  "/opt/apps/com.liumou.ddns-tencent/pid", // 进程 ID 文件路径
			Write: false,                                   // 默认不写入进程 ID 文件
		},
	}

	// 如果环境变量 UrlIp6Api 的长度大于等于 6，则使用环境变量中的值覆盖默认的 IPv6 API 地址
	if len(os.Getenv("UrlIp6Api")) >= 6 {
		l.IPS.UrlIp6Api = os.Getenv("UrlIp6Api")
	}

	return l
}
